Databases are computerized information storage and retrieval systems. A Relational Database Management System (RDBMS) is a Database Management System (DBMS) which uses relational techniques for storing and retrieving data. Relational databases are organized into tables which consist of rows and columns of data. The rows are formally called tuples. A database will typically have many tables and each table will typically have multiple tuples and multiple columns. The tables are typically stored on random Access Storage Devices (DASD) such as magnetic or optical disk drives for semi-permanent storage.
A DBMS is structured to accept commands to store, retrieve, and delete data. One widely used and well known set of commands is called the Structured Query Language (SQL). The current SQL standard is known informally as SQL/92. The definitions for SQL provide that a DBMS should respond to a particular query with a particular set of data given a specified database content, but the method that the DBMS uses to actually find the required information in the tables on the disk drives is left up to the DBMS. Typically there will be more than one method that can be used by the DBMS to access the required data. The DBMS will optimize the method used to find the data requested in a query in order to minimize the computer time used and, therefore, the cost of doing the query.
A method for accessing data in a DBMS may be to embed SQL statements within an application program, e.g., COBOL, C, C++. Typically, a DBMS may include one or more language specific pre-compilers. A pre-compiler may be configured to process the language program source code including the embedded SQL statements. Processing may include removing SQL statements from the source code, checking the syntax of the SQL statements and inserting calls to private DBMS routines in substitution of the SQL statements. Since each DBMS may include one or more language specific pre-compilers, an application program with embedded SQL statements that is executed on more than one DBMS may have to be pre-compiled using the language specific pre-compiler for each DBMS.
However, an application program using SQL queries may be able to be executed on more than one DBMS without requiring the use of language specific pre-compilers through the use of the Open Database Connectivity (ODBC) standard. The ODBC standard, promulgated by Microsoft™, provides a standard database access Application Programming Interface (API) that is portable across multiple database management systems. Subsequently, an application may utilize the ODBC interface to access data in various DBMSs using SQL. That is, the ODBC interface provides interoperability, where a single application program may access data from different DBMSs. This interoperability may allow an application developer to develop, compile, and ship an application program without targeting a specific DBMS. The ODBC interface is more clearly described in ODBC 2.0 Programmer's Reference and SDK guide, Microsoft Press (1994), which is hereby incorporated herein by reference.
However, not all application programs are ODBC compliant. That is, not all application programs with embedded SQL statements may be able to utilize an ODBC interface to access data in various DBMSs using SQL.
It would therefore be desirable to develop a tool to convert an application that uses embedded SQL API calls to access data in a DBMS to an application that uses ODBC API calls to access data in a DBMS.